package com.tyc.springframework.jvm.gc;

import java.util.HashMap;

/**
 * 使用不同的垃圾回收器运行以下这段程序计算耗时
 * -Xmx512M -Xms512M -XX:+UseParNewGC  886
 * -Xmx512M -Xms512M +UseParallelOldGC -XX:ParallelGCThreads=8
 * -Xmx512M -Xms512M +UseSerialGC
 * -Xmx512M -Xms512M -XX：+UseConcMarkSweepGC
 * @author tyc
 * @version 1.0
 * @date 2023-03-15 10:06:13
 */
public class GCTimeTest {
    static HashMap map = new HashMap();

    public static void main(String[] args) {
        Long beginTime = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            if(map.size()*512/1024/1024 >= 400){
                // 保护内存不溢出
                map.clear();
                System.out.println("clean map");
            }
            byte [] b1;
            for (int j = 0; j < 100; j++) {
                // 模拟对内存的消耗
                b1 = new byte[512];
                map.put(System.nanoTime(),b1);
            }
        }
        long endTime = System.currentTimeMillis();
        System.out.println(endTime-beginTime);
    }
}
